#pragma once
#include "stdafx.h"
#include "HookFunctions.h"

//HANDLE WINAPI MyLoadImageA(HINSTANCE hInst,LPCSTR name,UINT type,int cx,int cy,UINT fuLoad);
//
//HANDLE WINAPI MyLoadImageW( HINSTANCE hInst,LPCWSTR name,UINT type,int cx,int cy,UINT fuLoad);

HBITMAP WINAPI MyCreateBitmap(  int nWidth,  int nHeight, UINT nPlanes,  UINT nBitCount,  CONST VOID *lpBits);

HBITMAP WINAPI MyCreateBitmapIndirect(  CONST BITMAP *pbm );

HBITMAP WINAPI MyCreateCompatibleBitmap(  HDC hdc,  int cx,  int cy);

HBITMAP WINAPI MyCreateDIBitmap(  HDC hdc,  CONST BITMAPINFOHEADER *pbmih,  DWORD flInit,  CONST VOID *pjBits,  CONST BITMAPINFO *pbmi,  UINT iUsage);

HBITMAP WINAPI MyCreateDIBSection( HDC hdc,  CONST BITMAPINFO *lpbmi,  UINT usage, VOID **ppvBits,  HANDLE hSection,  DWORD offset);

HBITMAP WINAPI MyCreateDiscardableBitmap( HDC hdc, int cx, int cy);

HANDLE  WINAPI MyCopyImage( HANDLE h, UINT type, int cx, int cy, UINT flags);

BOOL WINAPI MyGetIconInfo( HICON hIcon, PICONINFO piconinfo);

BOOL WINAPI MyGetIconInfoExA( HICON hicon, PICONINFOEXA piconinfo);

BOOL WINAPI MyGetIconInfoExW( HICON hicon,PICONINFOEXW piconinfo);

BOOL WINAPI MyDeleteObject(  HGDIOBJ ho);

HICON WINAPI MyCopyIcon( HICON hIcon);

HICON WINAPI MyCreateIcon(HINSTANCE hInstance,int nWidth,int nHeight,BYTE cPlanes,BYTE cBitsPixel,CONST BYTE *lpbANDbits,CONST BYTE *lpbXORbits);

HICON WINAPI MyCreateIconFromResource( PBYTE presbits, DWORD dwResSize, BOOL fIcon, DWORD dwVer);

HICON WINAPI MyCreateIconFromResourceEx( PBYTE presbits, DWORD dwResSize,BOOL fIcon,DWORD dwVer,int cxDesired,int cyDesired,UINT Flags );

HICON WINAPI MyCreateIconIndirect( PICONINFO piconinfo );

BOOL  WINAPI MyDestroyIcon(HICON hIcon);

HICON WINAPI MyDuplicateIcon(HINSTANCE hInst, HICON hIcon);

HICON WINAPI MyExtractAssociatedIconA(HINSTANCE hInst,  LPSTR lpIconPath,  LPWORD lpiIcon);

HICON WINAPI MyExtractAssociatedIconW(HINSTANCE hInst,  LPWSTR lpIconPath,  LPWORD lpiIcon);

HICON WINAPI MyExtractAssociatedIconExA(HINSTANCE hInst,LPSTR lpIconPath,  LPWORD lpiIconIndex,  LPWORD lpiIconId);

HICON WINAPI MyExtractAssociatedIconExW(HINSTANCE hInst,LPWSTR lpIconPath,  LPWORD lpiIconIndex,  LPWORD lpiIconId);

HICON WINAPI MyExtractIconA(HINSTANCE hInst, LPCSTR lpszExeFileName, UINT nIconIndex);

HICON WINAPI MyExtractIconW(HINSTANCE hInst, LPCWSTR lpszExeFileName, UINT nIconIndex);

UINT  WINAPI MyExtractIconExA(LPCSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons);

UINT  WINAPI MyExtractIconExW(LPCWSTR lpszFile, int nIconIndex,  HICON *phiconLarge, HICON *phiconSmall, UINT nIcons);

HICON WINAPI MyLoadIconA( HINSTANCE hInstance, LPCSTR lpIconName );

HICON WINAPI MyLoadIconW( HINSTANCE hInstance, LPCWSTR lpIconName );

UINT  WINAPI MyPrivateExtractIconsA( LPCSTR szFileName, int nIconIndex, int cxIcon, int cyIcon, HICON *phicon, UINT *piconid, UINT nIcons, UINT flags);

UINT  WINAPI MyPrivateExtractIconsW( LPCWSTR szFileName, int nIconIndex, int cxIcon, int cyIcon, HICON *phicon, UINT *piconid,UINT nIcons,UINT flags);

HCURSOR WINAPI MyCreateCursor( HINSTANCE hInst, int xHotSpot, int yHotSpot,int nWidth, int nHeight, CONST VOID *pvANDPlane,CONST VOID *pvXORPlane);

HCURSOR WINAPI MyLoadCursorA( HINSTANCE hInstance, LPCSTR lpCursorName);

HCURSOR WINAPI MyLoadCursorW( HINSTANCE hInstance, LPCWSTR lpCursorName);

HCURSOR WINAPI MyLoadCursorFromFileA( LPCSTR lpFileName );

HCURSOR WINAPI MyLoadCursorFromFileW( LPCWSTR lpFileName );

BOOL WINAPI MyDestroyCursor( HCURSOR hCursor );

HBRUSH  WINAPI MyCreateBrushIndirect(  CONST LOGBRUSH *plbrush);

HBRUSH  WINAPI MyCreateSolidBrush(  COLORREF color);

HBRUSH  WINAPI MyCreatePatternBrush(  HBITMAP hbm);

HBRUSH  WINAPI MyCreateDIBPatternBrush(  HGLOBAL h,  UINT iUsage);

HBRUSH  WINAPI MyCreateDIBPatternBrushPt(  CONST VOID *lpPackedDIB,  UINT iUsage);

HBRUSH  WINAPI MyCreateHatchBrush(  int iHatch,  COLORREF color);

HDC WINAPI MyCreateCompatibleDC( HDC hdc );

HDC WINAPI MyCreateDCA( LPCSTR pwszDriver,  LPCSTR pwszDevice,  LPCSTR pszPort,  CONST DEVMODEA * pdm );

HDC WINAPI MyCreateDCW( LPCWSTR pwszDriver,  LPCWSTR pwszDevice,  LPCWSTR pszPort,  CONST DEVMODEW * pdm );

HDC WINAPI MyCreateICA( LPCSTR pszDriver,  LPCSTR pszDevice,  LPCSTR pszPort,  CONST DEVMODEA * pdm );

HDC WINAPI MyCreateICW( LPCWSTR pszDriver,  LPCWSTR pszDevice,  LPCWSTR pszPort,  CONST DEVMODEW * pdm );

HDC WINAPI MyGetDC( HWND hWnd );

HDC WINAPI MyGetDCEx( HWND hWnd, HRGN hrgnClip, DWORD flags );

HDC WINAPI MyGetWindowDC( HWND hWnd );

int WINAPI MyGdiReleaseDC( HDC hDC);

BOOL WINAPI MyDeleteDC( HDC hdc);

HFONT WINAPI MyCreateFontA(  int cHeight,  int cWidth,  int cEscapement,  int cOrientation,  int cWeight,  DWORD bItalic,
    DWORD bUnderline,  DWORD bStrikeOut,  DWORD iCharSet,  DWORD iOutPrecision,  DWORD iClipPrecision,
    DWORD iQuality,  DWORD iPitchAndFamily, LPCSTR pszFaceName);

HFONT WINAPI MyCreateFontW(  int cHeight,  int cWidth,  int cEscapement,  int cOrientation,  int cWeight,  DWORD bItalic,
     DWORD bUnderline,  DWORD bStrikeOut,  DWORD iCharSet,  DWORD iOutPrecision,  DWORD iClipPrecision,
     DWORD iQuality,  DWORD iPitchAndFamily, LPCWSTR pszFaceName);

HFONT WINAPI MyCreateFontIndirectA(  CONST LOGFONTA *lplf);

HFONT WINAPI MyCreateFontIndirectW( CONST LOGFONTW *lplf);

HDC WINAPI MyCreateMetaFileA(  LPCSTR pszFile );

HDC WINAPI MyCreateMetaFileW(  LPCWSTR pszFile );

HDC WINAPI MyCreateEnhMetaFileA(  HDC hdc,  LPCSTR lpFilename,  CONST RECT *lprc,  LPCSTR lpDesc);

HDC WINAPI MyCreateEnhMetaFileW(  HDC hdc,  LPCWSTR lpFilename,  CONST RECT *lprc,  LPCWSTR lpDesc);

HENHMETAFILE WINAPI MyGetEnhMetaFileA(  LPCSTR lpName );

HENHMETAFILE WINAPI MyGetEnhMetaFileW(  LPCWSTR lpName );

HMETAFILE WINAPI MyGetMetaFileA(  LPCSTR lpName);

HMETAFILE WINAPI MyGetMetaFileW( LPCWSTR lpName );

BOOL WINAPI MyDeleteMetaFile( HMETAFILE hmf );

BOOL WINAPI MyDeleteEnhMetaFile( HENHMETAFILE hmf );

HENHMETAFILE WINAPI MyCopyEnhMetaFileA( HENHMETAFILE hEnh, LPCSTR lpFileName);

HENHMETAFILE WINAPI MyCopyEnhMetaFileW( HENHMETAFILE hEnh, LPCWSTR lpFileName);

HENHMETAFILE WINAPI MyCloseEnhMetaFile( HDC hdc);

HMETAFILE WINAPI MyCloseMetaFile( HDC hdc);

HPEN WINAPI MyCreatePen(  int iStyle,  int cWidth,  COLORREF color);

HPEN WINAPI MyCreatePenIndirect(  CONST LOGPEN *plpen);

HPEN WINAPI MyExtCreatePen( DWORD iPenStyle, DWORD cWidth, CONST LOGBRUSH *plbrush, DWORD cStyle, CONST DWORD *pstyle);

HRGN WINAPI MyPathToRegion( HDC hdc);

HRGN WINAPI MyCreateEllipticRgn(  int x1,  int y1,  int x2, int y2);

HRGN WINAPI MyCreateEllipticRgnIndirect(  CONST RECT *lprect);

HRGN WINAPI MyCreatePolygonRgn( CONST POINT *pptl, int cPoint, int iMode);

HRGN WINAPI MyCreatePolyPolygonRgn( CONST POINT *pptl, CONST INT  *pc, int cPoly, int iMode);

HRGN WINAPI MyCreateRectRgn(  int x1,  int y1,  int x2,  int y2);

HRGN WINAPI MyCreateRectRgnIndirect(  CONST RECT *lprect);

HRGN WINAPI MyCreateRoundRectRgn(  int x1,  int y1,  int x2,  int y2,  int w,  int h);

HRGN WINAPI MyExtCreateRegion( CONST XFORM * lpx,  DWORD nCount, CONST RGNDATA * lpData);

int WINAPI MyDeleteRegion(HRGN hrgn);

HPALETTE WINAPI MyCreateHalftonePalette(  HDC hdc);

HPALETTE WINAPI MyCreatePalette( CONST LOGPALETTE * plpal );

CString GetGDIHandleType( HGDIOBJ hObj, SIZE_T nType );